#include "sort.h"

int ChoiceSort ()
{

    int input = 0 ;

    while (1)
    {

        printf ("请选择排序方式: 1.插入排序 2.希尔排序 3.直接选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.非递归版快速排序 8.归并排序 9.计数排序\n") ;

        scanf ("%d" , &input) ;

        if (input > 0 && input <= 9)
        {

            return input ;

        }

        else
        {

            printf ("输入错误") ;

        }

    }

}

void TestSort ()
{

    void (*p [10]) (int* arr , int n) = { 0 , InsertSort , ShellSort , SelectSort , HeapSort , BubbleSort , QuickSort , QuickSortNoR , MergeSort , CountSort} ;

    int number = 0 ;

    printf ("请输入要排序数组的大小: ") ;

    scanf ("%d" , &number) ;

    int arr [number] ;

    printf ("\n请输入要排序的数组: ") ;

    for (int i = 0 ; i < number ; i++)
    {

        scanf ("%d%^c" , &arr [i]) ;
        
    }

    int n = sizeof (arr) / sizeof (arr [0]) ;

    int input = ChoiceSort () ;

    p [input] (arr , n) ;

    for (int i = 0 ; i < n ; i++)
    {

        printf ("%d " , arr [i]) ;
 
    }

    printf ("\n") ;

}

int main ()
{

    TestSort () ;

    return 0 ;

}